Streaming of real-time video content over IP networks, such as the Internet, has become increasingly popular since the introduction of video conference and video call. Typically video is compressed and sent over the internet as a series of small packets using Real-time Transport Protocol (RTP) over User Datagram Protocol (UDP). UDP is a simple and efficient protocol that allows two computers on a multi node network, such as the Internet, to exchange data without the need to set up special transmission channels or data paths. One drawback of this method however, is that there is no mechanism within the protocol to guarantee delivery. It is up to the receiving end of the packet stream to detect loss or corruption and recover data using error correction techniques, for example, forward error correction (FEC).
Compressed video streams are very sensitive to transmission errors because of the use of predictive coding and variable length coding (VLC). Various methods are available for error concealment and resilience, but these increase CPU loading at both the sending and receiving ends and transmission bandwidth requirements. Such methods are, in particular, not suitable for wireless or handheld applications such as smart phones or mobile internet devices (MID). The re-transmission of lost packets based on acknowledgment from the receiver is not an option for real-time multimedia applications such as video conference or video calls because they impose very strict requirement on voice latency and the video contents should be synchronized with the voice (lip synchronization).
In some public video call servers that supports voice and video over IP (V2oIP), a certain portion of uplink and downlink bandwidth is reserved for voice calls because people usually prefers good voice quality over video quality in a network environment where the bandwidth is limited. In this case, those servers may drop video packets and reserve the remaining bandwidth for voice call. Therefore it is very common that the voice packet loss rate is very low but with high loss rate on video packets during the video call. Moreover, network paths may drop both video and voice packets. Usually loss of voice packets can be masked by packet loss concealment (PLC) while loss of video packets is more difficult to handle.
One type of error correction methods that is used to combat the problem of video packet loss in V2oIP is packet duplication. The idea is the sender will send duplicate copies of important packets together with the original packets such that enough video packets for the video stream can be received and reassembled accurately at the receiver even in a high packet loss network condition. A drawback of this approach is that it increases the bandwidth of the streamed video, which in turn can result in increased packet loss if the network loading is increased. More importantly, when video packet duplication is used it is very hard to know the accurate packet loss rate based on RTCP report only because duplicate packets have the same sequence numbers and timestamps as their original packets.